# RecursiveCharacterTextSplitter 类，它是 langchain 库中用于文本分割的一个工具。这个类可以根据字符或标记来递归地分割文本。
from langchain_text_splitters import RecursiveCharacterTextSplitter

# 读取文件内容
file_path = "C:\\Users\\Administrator\\Desktop\\RAG\\模板\\示例文件\\splitter.txt"
try:
    with open(file_path, 'r', encoding='utf-8') as f:
        state_of_the_union = f.read()
except FileNotFoundError:
    print(f"文件 {file_path} 未找到，请检查路径是否正确。")
    exit(1)
except Exception as e:
    print(f"读取文件时发生错误: {e}")
    exit(1)

# 初始化 RecursiveCharacterTextSplitter
text_splitter = RecursiveCharacterTextSplitter(
    chunk_size=100,  # 每个文本块的最大长度（以字符或标记为单位）。在这个例子中设置为 100，演示目的。
    chunk_overlap=10, # 连续块之间的重叠。这里设置为 10，意味着每个块的最后 10 个字符会与下一个块的前 10 个字符重叠。
    length_function=len, # 用于计算文本块长度的函数，默认是 len 函数，它计算字符串的字符数。
    is_separator_regex=False, # 是否将分隔符视为正则表达式。默认是 False，表示直接使用分隔符而不是正则表达式。
)

# 创建文档片段
texts = text_splitter.create_documents([state_of_the_union])

# 打印前两个片段
if len(texts) > 0:
    print("第一个片段:")
    print(texts[0].page_content)
else:
    print("没有生成任何片段。")

if len(texts) > 1:
    print("\n第二个片段:")
    print(texts[1].page_content)
else:
    print("没有第二个片段。")